package com.campus.service;

import com.campus.domain.dto.*;
import com.campus.domain.vo.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 失物招领Service接口
 */
public interface ILostItemService {
    
    // 上传图片
    UploadImageVO uploadImage(MultipartFile file) throws Exception;
    
    // 发布失物
    Long publishLostItem(String title, String description, String location, 
                         String foundTime, String category, String[] imageUrls);
    
    // 获取失物列表
    PageResultVO<LostItemVO> getLostItemList(LostItemQueryDTO queryDTO);
    
    // 获取失物详情
    LostItemVO getLostItemDetail(Long id);
    
    // 更新失物
    void updateLostItem(Long id, String title, String description, 
                       String location, String foundTime, String category, String[] imageUrls);
    
    // 删除失物
    void deleteLostItem(Long id);
    
    // 点赞失物
    void likeItem(Long itemId);
    
    // 取消点赞失物
    void unlikeItem(Long itemId);
    
    // 申领失物
    void claimItem(ClaimDTO claimDTO);
    
    // 添加评论
    Long addComment(CommentDTO commentDTO);
    
    // 获取评论列表
    PageResultVO<CommentVO> getCommentList(Long itemId, Integer page, Integer pageSize);
    
    // 删除评论
    void deleteComment(Long commentId);
    
    // 点赞评论
    void likeComment(Long commentId);
    
    // 取消点赞评论
    void unlikeComment(Long commentId);
    
    // 添加回复
    Long addReply(ReplyDTO replyDTO);
    
    // 删除回复
    void deleteReply(Long replyId);
    
    // 点赞回复
    void likeReply(Long replyId);
    
    // 取消点赞回复
    void unlikeReply(Long replyId);
    
    // 获取待审核申领列表（管理员）
    PageResultVO<ClaimAuditVO> getPendingClaims(Integer page, Integer pageSize);
    
    // 审核申领
    void auditClaim(AuditClaimDTO auditDTO);
}

